#pragma once 

#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>

#define SIZE 1024

// 无缓冲 
#define SYNC_NOW  1
// 行缓冲
#define SYNC_LINE 2
// 全缓冲
#define SYNC_FULL 4

typedef struct _FILE
{
  int flags; // 刷新方式:(无/行/全缓冲)
  int fileno; // 文件描述符
  int capacity; // buffer的总容量
  int size; // buffer当前的使用量
  char buffer[SIZE]; // SIZE字节的缓冲区
} _FILE;

// 文件打开需要文件打开路径和权限
_FILE * fopen_(const char* path_name,const char *mode);

// ptr是要写入文件的数据 num是数据字节数 _FILE* 文件指针
void fwrite_(const char* ptr,int num,_FILE* fp);

//传文件指针关闭文件
void fclose_(_FILE* fp);

//传文件指针强制刷新缓冲区
void fflush_(_FILE* fp);
